package cn.com.wxd.biz.website;

import java.util.List;
import java.util.Map;

import cn.com.wxd.entity.website.CatalogInfo;
import cn.com.wxd.common.data.KVMap;
import cn.com.wxd.common.data.KeyValue;

/**
 * Title:CatalogService.java
 * Description:cn.com.wxd.biz.catalog
 * 
 * Company: Amumu管理平台
 * Copyright: Copyright (c) 2015
 * All right reserved.
 * Created time: 2015年10月22日 下午5:33:01
 *
 * @author WangXuDong
 * @version 1.0
 */
public interface CatalogService {
	/**
	 * 从数据库获取所有的栏目根据参数
	 * param 条件列表 key为字段名称，value为值
	 */
	List<CatalogInfo> getAllCatalogFormDb(Map<String, String> param);

	/**
	 * 获取所有的栏目
	 * param 条件列表 key为字段名称，value为值
	 */
	List<CatalogInfo> getAllCatalog(Map<String, String> param);
	/**
	 * 获取所有的栏目使用KVMap类型
	 * @param param 条件列表 key为字段名称，value为值
	 * @return key 栏目标识号 ,value栏目对象
	 */
	KVMap<String,CatalogInfo> getAllCatalogKVMap(Map<String, String> param);
	/**
	 * 根据栏目号获取栏目对象
	 */
	CatalogInfo getCatalogById(String id);
	/**
	 * 获取根栏目
	 * @return 根栏目列表
	 */
	List<CatalogInfo> getRootCatalog();
	/**
	 * 根据ID获取子栏目
	 */
	List<CatalogInfo> getSubCatalog(String id);
	/**
	 * 添加栏目
	 */
	boolean addCatalog(CatalogInfo cli);
	/**
	 * 删除栏目
	 */
	boolean deleteCatalog(String id);
	/**
	 * 在某个栏目下是否存在文章
	 */
	boolean isExistArt(String caId);
	/**
	 * 在某个栏目下是否存在子栏目
	 * @param caId 栏目ID
	 * @return 是否存在
	 */
	boolean isExistCata(String caId);
	/**
	 * 根据栏目标识号查栏目是否存在
	 * @param cataCode 栏目标识号
	 * @return 是否存在 ture 存在 false不存在
	 */
	boolean isExistCataCode(String cataCode);
	/**
	 * 返回一个list类型的键值对栏目导航列表
	 * 按照list的遍历顺序依次从父栏目到子栏目
	 * @param cataid 栏目ID
	 * @return 栏目从父到子的列表
	 */
	public List<KeyValue<Integer, String>> getCatalogNav(String cataid);
	/**
	 * 栏目排序
	 * @param newOrderId 新的排序号
	 * @param oldOrderId 旧的排序号
	 * @return 排序是否成功
	 */
	boolean rankCatalog(String newOrderId, String oldOrderId);
}
